/**
 * 
 */
package co.edu.udistrital.analyzer.business.orm.dao;

import java.io.Serializable;
import java.util.List;

import co.edu.udistrital.analyzer.business.orm.model.Param;
import co.edu.udistrital.analyzer.business.orm.model.enums.ParamName;

/**
 * Interface para el acceso a los objetos de tipo Param
 *
 * @author Alejo
 */
public interface ParamDAO extends Serializable {
	
    /**
     * Almacena el registro de un parametro
     * 
     * @param parametro Parametro que va a ser almacenado
     */
    void save(Param parametro);

    /**
     * Actualiza el registro de un parametro
     * 
     * @param parametro Parametro que va a ser actualizado
     */
    void update(Param parametro);

    /**
     * Elimina el registro de un parametro
     * 
     * @param idParametro Llave primaria del parametro que va a ser eliminado
     */
    void delete(Integer idParametro);

    /**
     * Consulta el registro de un parametro por de llave primaria
     * 
     * @param idParametro Llave primaria del parametro a consultar
     */
    Param findById(Integer idParametro);

    /**
     * Consulta todos los registros de parametros
     */
    List<Param> findAll();

    /**
     * Consulta el registro de un parametro por la llave
     * 
     * @param idParametro Llave del parametro a consultar
     */
    Param findByKey(ParamName paramKey);
	
    /**
     * Almacena o actualiza el registro de un parametro
     * 
     * @param parametro Parametro que va a ser almacenado o actualizado
     */
    void saveOrUpdate(Param parametro);

}
